<?php

class Estudiante_Model extends CI_Model {

    function grabarEstudiante($parameters) {

        $insert = array(
            "persona_ide_pers" => $parameters['persona_ide_pers'],
            "planted_procede_est" => $parameters['planted_procede_est'],
            "especialidad_est" => $parameters['especialidad_est'],
            "nombre_padre_est" => $parameters['nombre_padre_est'],
            "profesion_padre_est" => $parameters['profesion_padre_est'],
            "nombre_madre_est" => $parameters['nombre_madre_est'],
            "profesion_madre_est" => $parameters['profesion_madre_est'],
            "conjuge_est" => $parameters['conjuge_est'],
            "carga_fam_est" => $parameters['carga_fam_est'],
            "tipo_sangre_est" => $parameters['tipo_sangre_est'],
            "sector_est" => $parameters['sector_est'],
            "email_pers_est" => $parameters['email_pers_est'],
            "face_est" => $parameters['face_est'],
            "twit_est" => $parameters['twit_est'],
            "estud_traba_est" => $parameters['estud_traba_est'],
            "activo_est" => $parameters['activo_est'],
            "eliminado_est" => 0);
        $this->db->insert("estudiante", $insert);
        return $this->db->insert_id();
    }

    function actualizarEstudiante($parameters, $ide_pers) {
        $update = array(
            "planted_procede_est" => $parameters['planted_procede_est'],
            "especialidad_est" => $parameters['especialidad_est'],
            "nombre_padre_est" => $parameters['nombre_padre_est'],
            "profesion_padre_est" => $parameters['profesion_padre_est'],
            "nombre_madre_est" => $parameters['nombre_madre_est'],
            "profesion_madre_est" => $parameters['profesion_madre_est'],
            "conjuge_est" => $parameters['conjuge_est'],
            "carga_fam_est" => $parameters['carga_fam_est'],
            "tipo_sangre_est" => $parameters['tipo_sangre_est'],
            "sector_est" => $parameters['sector_est'],
            "email_pers_est" => $parameters['email_pers_est'],
            "face_est" => $parameters['face_est'],
            "twit_est" => $parameters['twit_est'],
            "estud_traba_est" => $parameters['estud_traba_est'],
            "activo_est" => $parameters['activo_est']);
        $this->db->where("persona_ide_pers", $ide_pers);
        $this->db->update("estudiante", $update);
    }

    function getDatosEstudiante($ide_pers) {
        $this->db->from('persona');
        $this->db->join('estudiante', 'persona.ide_pers = estudiante.persona_ide_pers', 'inner');
        $this->db->where('estudiante.persona_ide_pers', $ide_pers);
        $this->db->where('estudiante.eliminado_est', 0);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data;
    }

    function getDatosIdePers($ide_est) {
        $this->db->from('estudiante');
        $this->db->where('ide_est', $ide_est);
        $this->db->where('estudiante.eliminado_est', 0);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data[0]['persona_ide_pers'];
    }

    function getListado() {
        $this->db->select('estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,estudiante.planted_procede_est,estudiante.activo_est');
        $this->db->from('persona');
        $this->db->join('estudiante', 'persona.ide_pers = estudiante.persona_ide_pers', 'inner');
        $this->db->where('estudiante.eliminado_est', 0);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }

    function eliminarEstudiante($ide_doc) {
        $update = array("eliminado_est" => 1);
        $this->db->where("ide_est", $ide_doc);
        $this->db->update("estudiante", $update);
    }

    function getBusquedaEstudiante($valor, $tipo) {
        if ($tipo == 1)
            $criterio = "persona.cedula_pers LIKE '%$valor%'";
        elseif ($tipo == 2)
            $criterio = "persona.apellido_pers LIKE '%$valor%'";
        else
            $criterio = "persona.nombre_pers LIKE '%$valor%'";


        $this->db->select('estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,estudiante.planted_procede_est,estudiante.activo_est');
        $this->db->from('persona');
        $this->db->join('estudiante', 'persona.ide_pers = estudiante.persona_ide_pers', 'inner');
        $this->db->where($criterio);
        $this->db->where('estudiante.eliminado_est', 0);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");
        $query = $this->db->get();

        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }

    function getListadoNoInscritos($ide_lec) { //hay que arreglar la consulta matriculas.id_matr = cursa.matriculas_id_matr
        $cadsql = "estudiante.ide_est NOT IN "
                . "(SELECT matriculas.estudiante_ide_est "
                . "FROM matriculas INNER JOIN cursa ON matriculas.id_matr = cursa.matriculas_id_matr "
                . "WHERE (matriculas.inscrip_matr BETWEEN 0 AND 4 AND cursa.periodos_lectivos_ide_lec=$ide_lec))";
        $this->db->select('estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,estudiante.planted_procede_est,estudiante.activo_est,estudiante.ide_est');
        $this->db->from('persona');
        $this->db->join('estudiante', 'persona.ide_pers = estudiante.persona_ide_pers', 'inner');
        $this->db->where($cadsql);
        $this->db->where('estudiante.activo_est', 1);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }

    public function listarEstudaintes($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo, $id_materia=0, $estadoMat='') {
        $condicion="";
        if($id_materia!=0){
            $condicion=" and materia_ide_mat=" . $id_materia ." ";
        }
        if($estadoMat!=''){
            $condicion.=" and matriculas.estado_matr!=" . $estadoMat ." ";
        }
        $query = "select estudiante.ide_est, estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,
            estudiante.activo_est, matriculas.id_matr, matriculas.forma_pago  
            from estudiante 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers 
            inner join matriculas on matriculas.estudiante_ide_est = estudiante.ide_est   
            inner join cursa on cursa.matriculas_id_matr   = matriculas.id_matr             
            where cursa.periodos_lectivos_ide_lec=" . $id_periodo . " 
            and cursa.ide_car=" . $id_carrera . " 
            and cursa.ide_cic=" . $id_ciclo . " 
            and cursa.seccion=" . $seccion . " 
            and cursa.paralelo='" . $paralelo . "' 
            and (cursa.estado_cur = 0 and matriculas.nro_matr>0)".$condicion." 
             group by estudiante.ide_est order by persona.apellido_pers";
        $Q = $this->db->query($query);
        //echo $this->db->last_query().'</br>'; //toy aui
        return $Q->result_array();
    }

    public function obtenerDocenteMateria($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo, $id_materia) {
        
        $query = "select persona.apellido_pers , persona.nombre_pers, materia.nombre_mat, periodos_lectivos.descripcion_lec , 
            carrera.nombre_car, ciclos.nombre_cic  
            from cursa 
            inner join matriculas on matriculas.id_matr = matriculas_id_matr   
            inner join periodos_lectivos on periodos_lectivos.ide_lec = cursa.periodos_lectivos_ide_lec 
            inner join materia on materia.ide_mat = cursa.materia_ide_mat 
            inner join docente on docente.ide_doc = cursa.docente_ide_doc 
            inner join persona on persona.ide_pers=docente.persona_ide_pers 
            inner join carrera on carrera.ide_car=cursa.ide_car 
            inner join ciclos on ciclos.ide_cic = cursa.ide_cic 
            where cursa.periodos_lectivos_ide_lec = " . $id_periodo . " 
            and cursa.ide_car = " . $id_carrera . " 
            and cursa.ide_cic= " . $id_ciclo . " 
            and cursa.seccion=" . $seccion . " 
            and cursa.paralelo='" . $paralelo . "' 
            and cursa.materia_ide_mat=" . $id_materia . " group by persona.apellido_pers";
        $Q = $this->db->query($query);
        //echo $this->db->last_query();
        return $Q->result_array();
    }
    
    public function obtenerCicloCarrera($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo) {
        $query = "select periodos_lectivos.descripcion_lec , 
            carrera.nombre_car, ciclos.nombre_cic  
            from cursa 
            inner join periodos_lectivos on periodos_lectivos.ide_lec = cursa.periodos_lectivos_ide_lec             
            inner join carrera on carrera.ide_car=cursa.ide_car 
            inner join ciclos on ciclos.ide_cic = cursa.ide_cic 
            where cursa.periodos_lectivos_ide_lec = " . $id_periodo . " 
            and cursa.ide_car = " . $id_carrera . " 
            and cursa.ide_cic= " . $id_ciclo . " 
            and cursa.seccion=" . $seccion . " 
            and cursa.paralelo='" . $paralelo . "' ";
        $Q = $this->db->query($query);
        //echo $this->db->last_query();
        return $Q->result_array();
    }
    /**
     * Función que permite obtener los estudiantes que no sigan arrastre por ciclo 
     * @param type $id_periodo El periodo lectivo
     * @param type $id_carrera La carrera que pertenecen
     * @param type $id_ciclo El ciclo que pertenecen
     * @param type $seccion La seccion que estan
     * @param type $paralelo Paralelo al que pertenecen
     */
    public function obtenerEstudiantesCurso($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo) {
        $query = "select matriculas.id_matr, matriculas.estado_matr,estudiante.ide_est, estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,estudiante.activo_est, cursa.periodos_lectivos_ide_lec, cursa.ide_cur
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est  
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join matriculas on matriculas.id_matr = cursa.matriculas_id_matr   
            where cursa.periodos_lectivos_ide_lec=" . $id_periodo . " 
            and cursa.ide_car=" . $id_carrera . " 
            and cursa.ide_cic=" . $id_ciclo . " 
            and cursa.seccion=" . $seccion . " 
            and  cursa.paralelo='" . $paralelo . "' 
            and (cursa.estado_cur = 0 and matriculas.nro_matr>0)  
            group by persona.ide_pers 
            order by persona.apellido_pers";
        //and cursa.estado_cur=0 and (cursa.estado_cur = 0 and matriculas.nro_matr>0)  
        $Q = $this->db->query($query);
        //echo $this->db->last_query();
        return $Q->result_array();
    }

    /**
     * Función que permite obtener los estudiantes que no sigan arrastre por ciclo 
     * @param type $id_periodo El periodo lectivo
     * @param type $id_carrera La carrera que pertenecen
     * @param type $id_ciclo El ciclo que pertenecen
     * @param type $seccion La seccion que estan
     * @param type $paralelo Paralelo al que pertenecen
     */
    public function obtenerEstudiantesCursoArrastre($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo) {
        $query = "select matriculas.id_matr,  matriculas.estado_matr,estudiante.ide_est, estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,estudiante.activo_est, cursa.periodos_lectivos_ide_lec, cursa.ide_cur 
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est  
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join matriculas on matriculas.id_matr = cursa.matriculas_id_matr   
            where cursa.periodos_lectivos_ide_lec=" . $id_periodo . " 
            and cursa.ide_car=" . $id_carrera . " 
            and cursa.ide_cic=" . $id_ciclo . " 
            and cursa.seccion=" . $seccion . " 
            and  cursa.paralelo='" . $paralelo . "' 
            and  cursa.estado_cur BETWEEN 4 AND 6  
            group by persona.ide_pers 
            order by persona.apellido_pers";
        $Q = $this->db->query($query);
        //echo $this->db->last_query();
        return $Q->result_array();
    }
    public function obtenerEstudiantesCursoSeminario($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo) {
        $query = "select matriculas.id_matr,  matriculas.estado_matr,estudiante.ide_est, estudiante.persona_ide_pers,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,estudiante.activo_est, cursa.periodos_lectivos_ide_lec, cursa.ide_cur 
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est  
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join matriculas on matriculas.id_matr = cursa.matriculas_id_matr   
            where cursa.periodos_lectivos_ide_lec=" . $id_periodo . " 
            and cursa.ide_car=" . $id_carrera . " 
            and cursa.ide_cic=" . $id_ciclo . " 
            and cursa.seccion=" . $seccion . " 
            and  cursa.paralelo='" . $paralelo . "' 
            and matriculas.estado_matr=6 
            group by persona.ide_pers 
            order by persona.apellido_pers";
        $Q = $this->db->query($query);
        //echo $this->db->last_query();
        return $Q->result_array();
    }


    //05 de abril
    function getDatosEstudianteMatricula($ide_mat) {
        $this->db->from('persona');
        $this->db->join('estudiante', 'persona.ide_pers = estudiante.persona_ide_pers', 'inner');
        $this->db->join('matriculas', 'matriculas.estudiante_ide_est = estudiante.ide_est', 'inner');
        $this->db->where('matriculas.id_matr', $ide_mat);
        $this->db->where('estudiante.eliminado_est', 0);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data;
    }
    /**
     * Función que permite listar a los estudiantes que han solicitado financiamiento
     * No se toma en cuenta los estudiantes retirados estado_matr = 5
     * @param type $id_periodo El identificador del periodo
     * @return type lista de estudiantes
     */
    public function listarEstudaintesCuotas($id_periodo) {
        $query = "select estudiante.ide_est, estudiante.persona_ide_pers,persona.cedula_pers,"
                . "persona.apellido_pers, persona.nombre_pers, estudiante.activo_est, "
                . "cursa.periodos_lectivos_ide_lec, "
                . "matriculas.id_matr, matriculas.forma_pago, matriculas.estado_matr "
                . "from estudiante "
                . "inner join persona on persona.ide_pers = estudiante.persona_ide_pers "
                . "inner join matriculas on matriculas.estudiante_ide_est = estudiante.ide_est "
                . "inner join cursa on cursa.matriculas_id_matr = matriculas.id_matr "
                . "where cursa.periodos_lectivos_ide_lec= ".$id_periodo." "
                . " AND (cursa.estado_cur = 0 OR cursa.`estado_cur` BETWEEN 4 AND 5) AND (matriculas.nro_matr>0)" 
                . " AND ((matriculas.forma_pago BETWEEN 3 AND 7 ) OR ( matriculas.forma_pago=11))"  
                //. "and (cursa.estado_cur = 0 and matriculas.nro_matr>0) "
               // . "and (matriculas.forma_pago=3 OR matriculas.forma_pago=4 OR matriculas.forma_pago=5 OR matriculas.forma_pago=6 OR matriculas.forma_pago=7 OR matriculas.forma_pago=11)  "
                . "group by estudiante.ide_est order by persona.apellido_pers";
        $Q = $this->db->query($query);
        //echo $this->db->last_query().'</br>'; //toy aui
        return $Q->result_array();
    }
    
    //reportes
    public function listarEstudaintesTodos($id_periodo=10, $id_carrera=0) {
        $condicion="";
        if($id_carrera!=0){
            $condicion=" and cursa.ide_car=" . $id_carrera ." ";
        }
        $query = " select estudiante.ide_est, estudiante.persona_ide_pers, persona.*,"
                . "estudiante.activo_est, cursa.paralelo, "
                . "cursa.seccion, carrera.nombre_car, ciclos.nombre_cic "
                . "from estudiante "
                . "inner join persona on persona.ide_pers = estudiante.persona_ide_pers "
                . "inner join matriculas on matriculas.estudiante_ide_est = estudiante.ide_est "
                . "inner join cursa on cursa.matriculas_id_matr  = matriculas.id_matr "
                . "inner join carrera on carrera.ide_car=cursa.ide_car "
                . "inner join ciclos on ciclos.ide_cic = cursa.ide_cic  "
                . "where cursa.periodos_lectivos_ide_lec= ".$id_periodo." ".$condicion." "
                . "and (cursa.estado_cur = 0 and matriculas.nro_matr>0) "
                . "group by estudiante.ide_est order by  ciclos.nombre_cic,persona.apellido_pers asc";
        $Q = $this->db->query($query);
 //       echo $this->db->last_query().'</br>'; //toy aui
        return $Q->result_array();
    }
}
